package com.abc.base.collection;

import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.TreeSet;

public class SetMain {

   public static void main(String[] args) {

      /**
       * 底层是Hash，无序 唯一
       */
      HashSet hashSet = new HashSet<>();
      /**
       * 底层是链表+Hash，有序 唯一
       *
       * 链表 == FIFO序列
       * hash == 唯一
       */
      LinkedHashSet linkedHashSet = new LinkedHashSet();
      /**
       * 底层是红黑树 有序 唯一
       *
       * 1. 如何保证元素排序的呢?
       * 自然排序
       * 比较器排序
       * 2.如何保证元素唯一性的呢?
       * 根据比较的返回值是否是0来决定
       */
      TreeSet treeSet = new TreeSet();

      hashSet.add("1");
      hashSet.add("3");
      hashSet.add("2");
      hashSet.add("1");

      linkedHashSet.add("1");
      linkedHashSet.add("3");
      linkedHashSet.add("2");
      linkedHashSet.add("1");

      treeSet.add("1");
      treeSet.add("2");
      treeSet.add("3");
      treeSet.add("1");

      for(Object str:hashSet){
         System.out.println(str);
      }
      for(Object str:linkedHashSet){
         System.out.println(str);
      }
      for(Object str:treeSet){
         System.out.println(str);
      }
   }
}
